package org.example.service;

import org.example.domain.User;
import org.example.utils.ResponseUtil.ResponseResult;


public interface UserService {

    /**
     * 增加：注册新账号
     */
    ResponseResult insertUser(User user);


    /**
     * 修改：根据账号id，更新其对应的账号信息
     */
    ResponseResult updateUserById(User user);


    /**
     * 物理删除：根据id删除对应账号.
     * 同时，疫苗接种记录进行逻辑删除：status=0，
     * 疫苗预约记录进行物理删除。
     */
    ResponseResult deleteUserById(Integer uid);

    /**
     * 逻辑删除：根据id注销对应账号，status=0。
     * 疫苗接种记录不做修改，
     * 疫苗预约记录进行物理删除。
     */
    ResponseResult closeUserById(Integer uid);


    /**
     * 账号登录验证
     */
    ResponseResult selectUserByAccountAndPassword(User user);


    /**
     * 根据账号的模糊查询
     */
    ResponseResult selectUserLikeAccount(String account);


    /**
     * 根据用户名的模糊查询
     */
    ResponseResult selectUserLikeUsername(String username);


    /**
     * 根据所在部门的模糊查询
     */
    ResponseResult selectUserLikeDept(String dept);



    /**
     *根据账号id查找唯一对象
     */
    ResponseResult selectUserById (Integer uid);


    /**
     * 根据账号查找对象
     */
    ResponseResult selectUserByAccount(String account);

    /**
     * 根据用户名查找多个对象
     */
    ResponseResult selectUserByUsername(String username);


    /**
     * 根据所属部门查找多个对象
     */
    ResponseResult selectUserByDept(String dept);


    /**
     * 根据角色身份查找多个对象
     */
    ResponseResult selectUserByRole(Integer role);


    /**
     * 根据账号状态查找多个对象
     */
    ResponseResult selectUserByStatus(Integer status);



    /**
     * 查询所有账号信息
     */
    ResponseResult selectAllUser();


}
